1. Field of the Invention
This invention relates to data transmission and more particularly relates to an apparatus, system, and method for communicating binary data using a self-descriptive binary data structure.
2. Description of the Related Art
One of the primary methods of transferring data between a host and a storage system is to use a data structure called an s-record. The s-record format was first created by Motorola™ and has become an industry-standard for transmitting files from a source 102 to a target 104. Other developers have created derivatives and supplementary enhancements to the s-record over time, but the s-record data structure has generally remained the same in most regards. Although the s-record data structure may be used to transmit files that contain data that will ultimately be stored in binary format, the s-record data structure itself is in ASCII format, typically using ASCII and hex characters.
An s-record may be described as a single line in an s-record image or file. Each s-record within the file includes metadata and data. The metadata, for example, includes a memory address in which the data is to be stored. Unfortunately, the total length of each s-record is relatively short, limited to no more than 78 bytes. Consequently, an s-record image containing many s-records must include a significant amount of metadata. This creates various concerns for transferring an s-record image as well as processing and storing the data.
Of great concern is the overhead required to transmit an s-record image from one device to another. The amount of bandwidth and the time required to transmit an s-record is substantial due to the large amount of metadata that also must be transmitted with the data. Furthermore, the ASCII s-record needs to be converted to binary, at some point, prior to storing the data in the memory. A significant disadvantage related to converting large quantities of data from ASCII to binary is that substantial memory is necessary to concurrently accommodate both the ASCII and the binary formats as the conversion is taking place.
One beneficial use of the s-record data structure is recognized in applications that require frequent error checking during transmission of the data. By transmitting and checking individual s-records, transmission errors may be recognized quickly, and the data may be reprocessed. Although the s-record format may include one record to indicate the quantity of records in a file, the s-record format does not provide a means to check the integrity of the entire image or file. In contrast, there is much less need in many data transmission applications to check very small blocks of data. For example, many data transmission applications, such as storage system applications, realize significant benefits by transmitting large blocks of data and checking the entire image or file, rather than individual records. Frequent error checking is not required in many storage system applications because the transmission distance is relatively short and the opportunity for data transmission losses is relatively low.
A further shortcoming of the s-record data structure is that it does not provide any means for identifying individual code segments within the s-record or the s-record image. The s-record simply provides a small set of data and the memory address in which that data is to be stored. The data within a single s-record is contiguous, but the data in consecutive s-records is not necessarily contiguous. Without some type of index, table of contents, or process for identifying individual code segments in an s-record or s-record image, it is not possible to extract a desired set of data from within the s-record or s-record image.
It is important to note that some forms of binary images, as compared to ASCII images, do exist. Some of these binary image formats include the executable and linking format (ELF) and the common object file format (COFF). However, these formats are configured to include only a single executable and do not identify individual code segments within a file.
Consequently, a need exists for an apparatus, system, and method that overcome the foregoing limitations that are inherent in the conventional s-record data structure and regime. Beneficially, such an apparatus, system, and method would overcome the detrimental impacts of the large size of the s-record image, the complexity of processing the data, the inability to perform error checking on an entire image, and the inability to identify or extract an individual code segment.